﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace TTEngine
{
    public abstract class Faction : TaggedObject
    {
        public int DifficultyLevel { get; set; }

        //can the faction use the specified room?
        public bool CanUseRoom(Room room)
        {
            foreach (string tag in room.FactionTags)
                if (HasTag(tag))
                    return true;
            return false;
        }

        //faction post-processing
        public virtual void PostProcessing(Room room)
        {
        }

        //spawn a group of monsters
        public abstract List<Actor> SpawnMonsters(DungeonLevel level, int x, int y);
    }
}
